LOADING...

dadada~

loading

Python基础


最最最基础的输出

#use/bin/python
print("hao ye!")
  • #!/usr/bin/python——脚本语言的第一行,只对 Linux/Unix 用户适用,用来指定脚本用什么解释器来执行,加上执行权限后,可以直接用 ./ 执行,不然会出错,因为找不到 python 解释器
  • \#!/usr/bin/python是告诉操作系统执行这个脚本的时候,调用 /usr/bin 下的 python 解释器
  • #!/usr/bin/env python这种用法是为了防止操作系统用户没有将 python 装在默认的 /usr/bin 路径里,当系统看到这一行的时候,首先会到 env 设置里查找 python 的安装路径,再调用对应路径下的解释器程序完成操作
  • Python中默认的编码格式是 ASCII 格式,在没修改编码格式时,读取中文可能会报错,可在文件开头加入# -\*- coding: UTF-8 -\*-或者 # coding=utf-8
  • print 默认输出是换行的,如果要实现不换行需要在变量末尾加上,

Python 标识符

  • 和C语言有点像:由数字、字母、下划线构成,且数字不能开头,区分大小写
  • 以下划线开头的标识符具有特殊意义:以单下划线开头_foo的代表不能直接访问的类属性,需通过类提供的接口进行访问,不能用 from xxx import * 导入
  • 以双下划线开头的__foo代表类的私有成员,以双下划线开头和结尾的 __foo__代表 Python 里特殊方法专用的标识,如__init__()代表类的构造函数
  • Python 可以同一行显示多条语句,方法是用分号;分开

Python 行和缩进

  • Python 的代码块不使用大括号{}来控制类,函数以及其他逻辑判断,python 最具特色的就是用==缩进==来写模块
  • 缩进的空白数量是可变的,但是所有代码块语句必须包含相同的缩进空白数量,这个必须严格执行
  • Python语句中一般以新行作为语句的结束符,但是可以使用斜杠\将一行的语句分为多行显示
  • 语句中包含[]、{}、() 不需要使用多行连接符

两个关于缩进的报错:

  • IndentationError: unindent does not match any outer indentation level——表明使用的缩进方式不一致,有的是 tab 键缩进,有的是空格缩进,改为一致即可
  • IndentationError: unexpected indent——可能是tab和空格没对齐的问题

Python 引号和注释

  • Python 可以使用引号'、双引号"、三引号'''或"""来表示字符串,引号的开始与结束必须是相同类型的
  • 三引号可以由多行组成,是编写多行文本的快捷语法,常用于文档字符串,在文件的特定地点,被当做注释
  • python中单行注释使用#开头,多行注释使用三引号'''或"""

Python 变量

  • 变量赋值不需要声明类型,变量在使用前都必须赋值,变量赋值以后才会被创建
  • 可以多个变量赋值:
    • a=b=c=9——创建一个整型对象,值为9,三个变量被分配到相同的内存空间上
    • a,b,c=1,2,"hahaha"
  • Python有五个标准的数据类型:
    • Numbers(数字)—— Python支持四种不同的数字类型:
      • int(有符号整型,如:11)
      • long(长整型,也可以代表八进制和十六进制,如:11L)—— long 类型只存在于 Python2.X 版本中,在 2.2 以后的版本中,int 类型数据溢出后会自动转为long类型。在 Python3.X 版本中 long 类型被移除,使用 int 替代
      • float(浮点型,如:11.11f)
      • complex(复数,由实数部分和虚数部分构成,可以用a + bj,或者complex(a,b)表示, 复数的实部和虚部都是浮点型,如:9.322e-36j)
    • String(字符串)
      • python的字串列表有2种取值顺序:从左到右索引默认0开始的,最大范围是字符串长度少1;从右到左索引默认-1开始的,最大范围是字符串开头
      • 使用[头下标:尾下标]来截取相应的字符串,其中下标是从 0 开始算起,可以是正数或负数,下标可以为空表示取到头或尾,
      • [头下标:尾下标]获取的子字符串包含头下标的字符,但不包含尾下标的字符
      • +是字符串连接运算符,星号*是重复操作
      • Python 列表截取可以接收第三个参数,为截取的步长,如:设置为步长为 2 ,即间隔一个位置来截取字符串
    • List(列表)
      • List(列表) 是 Python 中使用最频繁的数据类型,是有序的对象集合
      • 列表可以完成大多数集合类的数据结构实现,它支持字符,数字,字符串甚至可以包含列表(即嵌套)
      • 列表用[]标识,是 python 最通用的复合数据类型
      • 列表中值的切割也可以用到变量[头下标:尾下标],就可以截取相应的列表
    • Tuple(元组)
      • 元组是另一个数据类型,类似于 List(列表)
      • 元组用()标识,内部元素用逗号隔开,但是元组不能二次赋值,相当于只读列表
      • 依然可以使用[头下标:尾下标]来截取
    • Dictionary(字典)
      • 字典是无序的对象集合,字典当中的元素是通过键来存取的,而不是通过偏移存取
      • 字典用{ }标识,字典由索引(key)和它对应的值value组成
  • python数据类型的转换,将数据类型作为函数名即可

Python 运算符

这里只有一些以前没有见过的运算符——

  • **——幂运算
  • //——取整除运算
  • 成员运算符:
    • in——如果在指定的序列中找到值返回 True,否则返回 False
    • not in如果在指定的序列中没有找到值返回 True,否则返回 False
  • 身份运算符:
    • is——是判断两个标识符是不是引用自一个对象
    • is not——是判断两个标识符是不是引用自不同对象
    • is==区别——is用于判断两个变量引用对象是否为同一个(同一块内存空间),==用于判断引用变量的值是否相等
    • 我理解的就是——is的判断更严格,变量的值和类型都要相等,比如:a=1, b=1.0,此时 a is b返回false

Python 逻辑和循环语句

  • if语句:

    if x == 1:
        print("1")
    elif x == 2:
        print("2")
    else:
        print("false")
    
  • while语句:

    while a != 10:
        a += 1
        print(a)
    
  • for语句:

    for i in 'lalala':
        print("%s" % i)
    # 另一种:通过序列索引迭代
    for i in range(len(a)):
        print(a[i])
    
  • break和continue的用法和C语言差不多,pass——空白语句,一般用做占位

Python 自定义函数

  • 使用def声明,后接函数名称和参数

  • 任何传入参数和自变量必须放在圆括号中间。圆括号之间可以用于定义参数。

  • 函数的第一行语句可以使用文档字符串—用于存放函数说明

  • 函数内容以冒号起始,并且缩进

  • return [表达式],返回一个值给调用方,不写return相当于返回 None

    def test(a,b):
        "输出a + b的值"
        print(a + b)
        return a + b
    
    test(1, 2)
    

Python 模块

  • Python 模块(Module),是一个 Python 文件,以 .py 结尾,包含了 Python 对象定义和 Python 语句
  • 模块能定义函数,类和变量,也能包含可执行的代码
  • 模块定义好后,可以使用 import 语句来引入模块,如:import math,调用模块中的函数时:模块名.函数名
  • from…import语句可以从模块中导入一个指定的部分到当前命名空间中:from 模块名 import 函数名
  • from…import *把一个模块的所有内容全都导入到当前的命名空间

Python 包

  • 包是一个分层次的文件目录结构,它定义了一个由模块及子包,和子包下的子包等组成的 Python 的应用环境
  • 包就是文件夹,但该文件夹下必须存在 __init__.py 文件, 该文件的内容可以为空,__init__.py 用于标识当前文件夹是一个包
  • 导入格式:import 包名.模块名或者from 包名.模块名 import 函数名

其它的一点零碎的东西

  • 变量是拥有匹配对象的名字(标识符),命名空间是一个包含了变量名称(键)和它们各自相应的对象(值)的字典
  • 一个 Python 表达式可以访问局部命名空间和全局命名空间里的变量,如果局部变量和全局变量重名,则局部变量会覆盖全局变量
  • Python会把所有函数里赋值的变量都当做局部变量,可以在变量名前 + global 给函数内的全局变量赋值
  • dir() 函数:一个排好序的字符串列表,内容是一个模块里定义过的名字
  • globals()函数:返回全局命名空间里的名字
  • locals()函数:返回所有能在该函数里访问的命名,两个函数的返回类型都是字典
  • reload()函数:Python中的import语句可以导入module文件,但是import语句只是第一次导入的时候会执行module文件中的代码,然后就会把导入的模块文件存入到内存,当再次导入的时候,Python是直接从内存里面取出module文件,而不会执行module文件的内容了,而reload函数强制Python重新导入并执行module文件